/**
 * 
 */

package controller.command;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;

import common.UserCommand;

/**
 * 使用 Controller 或是 AbstractController，當遇到使用者提供請求參數時，您必須要自行從 HttpServletRequest 物件中取得請求參數，<br>
 * 如果您打算將這些請求參數設定至某個物件，您必須自行撰寫相關邏輯或進行型態轉換等動作。<br>
 * <br>
 * 您可以繼承 org.springframework.web.servlet.mvc.AbstractCommandController 來實作 Controller 類別，並提供一個Command物件，<br>
 * 當使用者請求來到時，AbstractCommandController 會試著比對請求參數名稱與您的 Command 上的 Setter 方法名稱（也就是setXXX方法名稱），<br>
 * 並呼叫對應的 Setter 方法以設定請求參數值，如果是 Setter 上的參數是基本型態的話，也會自動轉換請求參數值為對應的型態。<br>
 * 
 * @author Eric.Kao(gau168.gau@msa.hinet.net)
 * @version 1.0
 * @company E885 Group
 * @copyright Copyright (c) 2001-2008
 */

public class MyAbstractCommandController extends AbstractCommandController
{
	private String viewPage;

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.springframework.web.servlet.mvc.AbstractCommandController#handle(javax.servlet.http.HttpServletRequest,
	 *      javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
	 */
	@Override
	protected ModelAndView handle( HttpServletRequest request, HttpServletResponse response, Object object, BindException execption )
		throws Exception
	{
		UserCommand userCommand = ( UserCommand )object;

		Map< String, String > map = new HashMap< String, String >();
		map.put( "name", userCommand.getName() );
		map.put( "password", userCommand.getPassword() );

		return new ModelAndView( getViewPage(), "userInfo", map );
	}

	/**
	 * @return the viewPage
	 */
	public String getViewPage()
	{
		return viewPage;
	}

	/**
	 * @param viewPage the viewPage to set
	 */
	public void setViewPage( String viewPage )
	{
		this.viewPage = viewPage;
	}

}
